package com.jcn.seckill.redis;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Service;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

//将自动注册到Spring容器，不需要再在applicationContext.xml文件定义bean了
@Service
public class RedisPoolFactory {

	//对类成员变量、方法及构造函数进行标注，完成自动装配的工作
	//@Autowired标注可以放在成员变量上，也可以放在成员变量的set方法上，也可以放在任意方法上表示
	@Autowired
	//注入RedisConfig
	RedisConfig redisConfig;
	
	/**
	 * @Bean注解用于告诉方法，产生一个Bean对象，
	 * 然后这个Bean对象交给Spring管理。产生这个Bean对象的方法Spring只会调用一次，
	 * 随后这个Spring将会将这个Bean对象放在自己的IOC容器中。
	 * */
	@Bean
	public JedisPool JedisPoolFactory() {
		JedisPoolConfig poolConfig = new JedisPoolConfig();
		poolConfig.setMaxIdle(redisConfig.getPoolMaxIdle());
		poolConfig.setMaxTotal(redisConfig.getPoolMaxTotal());
		poolConfig.setMaxWaitMillis(redisConfig.getPoolMaxWait() * 1000);
		//getTimeout()：获取的是毫秒
		JedisPool jp = new JedisPool(poolConfig, redisConfig.getHost(), redisConfig.getPort(),
				redisConfig.getTimeout()*1000, redisConfig.getPassword(), 0);
		return jp;
	}
	
}
